package com.duckclouddrive.service;

import com.duckclouddrive.entity.po.EmailCode;
import com.duckclouddrive.entity.query.EmailCodeQuery;
import com.duckclouddrive.entity.vo.PaginationResultVO;

import java.util.List;


/**
 * 邮箱验证码 业务接口
 */
public interface EmailCodeService {

	/**
	 * 根据条件查询列表
	 */
	List<EmailCode> findListByParam(EmailCodeQuery param);

	/**
	 * 根据条件查询列表
	 */
	Integer findCountByParam(EmailCodeQuery param);

	/**
	 * 分页查询
	 */
	PaginationResultVO<EmailCode> findListByPage(EmailCodeQuery param);

	/**
	 * 新增
	 */
	Integer add(EmailCode bean);

	/**
	 * 批量新增
	 */
	Integer addBatch(List<EmailCode> listBean);

	/**
	 * 批量新增/修改
	 */
	Integer addOrUpdateBatch(List<EmailCode> listBean);

	/**
	 * 根据EmailAndCode查询对象
	 */
	EmailCode getEmailCodeByEmailAndCode(String email,String code);


	/**
	 * 根据EmailAndCode修改
	 */
	Integer updateEmailCodeByEmailAndCode(EmailCode bean,String email,String code);


	/**
	 * 根据EmailAndCode删除
	 */
	Integer deleteEmailCodeByEmailAndCode(String email,String code);

	/**
	 * 发送电子邮件验证码
	 *
	 * @param email 用户的电子邮件地址，用于发送验证码
	 * @param type 验证码的类型，可能用于注册、找回密码等不同场景
	 */
	void sendEmailCode(String email,Integer type);
	/**
	 * 检查用户邮箱验证码
	 * 该方法用于验证发送到用户邮箱的验证码是否正确
	 * 在用户注册或忘记密码等场景中，通过验证邮箱验证码来确认用户身份
	 *
	 * @param email 用户的邮箱地址，用于识别用户并查询对应的验证码
	 * @param code 用户输入的验证码，用于与系统记录的验证码进行比对
	 */
	void checkCode(String email, String code);
}